package com.taiyi.sqltoy.starter.context;

/**
 * 用户上下文信息
 * 
 * @author taiyi
 * @since 1.0.0
 */
public interface UserContext {

    /**
     * 获取当前用户ID
     * 
     * @return 用户ID，如果未登录返回null
     */
    String getCurrentUserId();

    /**
     * 获取当前用户名
     * 
     * @return 用户名，如果未登录返回null
     */
    String getCurrentUsername();

    /**
     * 获取当前租户ID
     * 
     * @return 租户ID，如果未设置返回null
     */
    String getCurrentTenantId();

    /**
     * 设置当前用户信息
     * 
     * @param userId 用户ID
     * @param username 用户名
     * @param tenantId 租户ID
     */
    void setCurrentUser(String userId, String username, String tenantId);

    /**
     * 清除当前用户上下文
     */
    void clearCurrentUser();

    /**
     * 判断当前是否有用户登录
     * 
     * @return true表示已登录，false表示未登录
     */
    default boolean hasCurrentUser() {
        return getCurrentUserId() != null;
    }
}